package com.vitamo.server;

import java.util.List;

import javax.servlet.ServletException;



import com.vitamo.client.GreetingService;
import com.vitamo.dao.Utilisateur.GestionUtilisateur;
import com.vitamo.dao.Utilisateur.Utilisateur;
import com.vitamo.shared.FieldVerifier;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.vitamo.Beans.*;
/**
 * The server side implementation of the RPC service.
 */
@SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet implements
		GreetingService {
	GestionUtilisateur GU;
	@Override
	public void init() throws ServletException {
		// TODO Auto-generated method stub
		super.init();
		GU=new GestionUtilisateur();
		
	} 
	public Boolean modifier(UtilisateurB U)throws IllegalArgumentException{
		return GU.upDate(U);
		
	}
	
	
	public Boolean EnregistrerChange(List<UtilisateurB> l)
			throws IllegalArgumentException {
		return GU.updateAll(l);
	}
	public String connect(String username,String pwd) throws IllegalArgumentException
	{
		Utilisateur tmp=null;
		tmp=GU.Connect(username, pwd);
		if (tmp!=null) {
			if (tmp.getStatu()) {
				if (tmp.getType().equals("Administrateur")) {
					return "AD";
				} else {
					return "bienvenue";
				}
			} else {
				return "Bienvenue "+tmp.getInfo().getNom()+" "+tmp.getInfo().getPrenom()+
				" Votre Status n'ast pas encor actif contactez l'administrateur"; 
				
			}
			
		} else {
				return "Mot de passe Ou Nom d'utilisateur Incorrect";
		}
		
	}
	public String Verifier(String username){
		if(GU.exist(username)){
			return "Votre nom d'utilisateur exist deja veuillez entrer un autre";
		}
		else {
			return "Votre Nom d'utilisateur est Valide";
		}
	}
	public List<UtilisateurB> getUtilisateurs(){
		List<UtilisateurB> l=GU.selectAll();
		return l;
	}
	public List<UtilisateurB> rechercher(String key){
		List<UtilisateurB> l=GU.rechercher(key);
		return l;
	}
	public String CreerUtilisateur(String username,String pwd,String type,String nom,String prenom,String adress,String email,String numt,String numf,String nump){
		if(GU.CreerUtilisateur(username, pwd, type, nom, prenom, adress, email, numt, numf, nump)){
			return "Votre est bien creer veuillez attendre la confirmation de l'Administrateur pour pouvoir se connecter";
		}
		else {
			return "Erreur lors de la creation de compte";
		}
	}
	
 	public String greetServer(String input) throws IllegalArgumentException {
		// Verify that the input is valid. 
		if (!FieldVerifier.isValidName(input)) {
			// If the input is not valid, throw an IllegalArgumentException back to
			// the client.
			throw new IllegalArgumentException(
					"Name must be at least 4 characters long");
		}

		String serverInfo = getServletContext().getServerInfo();
		String userAgent = getThreadLocalRequest().getHeader("User-Agent");

		// Escape data from the client to avoid cross-site script vulnerabilities.
		input = escapeHtml(input);
		userAgent = escapeHtml(userAgent);

		return "Hello, " + input + "!<br><br>I am running " + serverInfo
				+ ".<br><br>It looks like you are using:<br>" + userAgent;
	}

	/**
	 * Escape an html string. Escaping data received from the client helps to
	 * prevent cross-site script vulnerabilities.
	 * 
	 * @param html the html string to escape
	 * @return the escaped string
	 */
	private String escapeHtml(String html) {
		if (html == null) {
			return null;
		}
		return html.replaceAll("&", "&amp;").replaceAll("<", "&lt;")
				.replaceAll(">", "&gt;");
	}
}
